class DateUtil {
    constructor() {
    }

    dateFormat(format, d) {
        if(!d){
            d = new Date();
        }
        let date = {
            "M+": d.getMonth() + 1,
            "d+": d.getDate(),
            "h+": d.getHours(),
            "m+": d.getMinutes(),
            "s+": d.getSeconds(),
            "q+": Math.floor((d.getMonth() + 3) / 3),
            "S+": d.getMilliseconds()
        };

        if (/(y+)/i.test(format)) {
            format = format.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        for (let k in date) {
            if (new RegExp("(" + k + ")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length == 1
                    ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
            }
        }
        return format;
    }

    dateFormatYMDHMS(date) {
        return this.dateFormat("yyyy-MM-dd hh:mm:ss", date);
    }

    dateFormatYMDHMSNoToken(date) {
        return this.dateFormat("yyyyMMddhhmmss", date);
    }

    dateFormatYMD(date) {
        return this.dateFormat("yyyy-MM-dd", date);
    }
    
    yyyyMMddHHmmssToDate(date){
        let pattern = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;
        let dt = new Date(date.replace(pattern,'$1-$2-$3 $4:$5:$6'));
        return dt;
    }
}

let dateUtil = new DateUtil();
module.exports = dateUtil;


// console.log(dateUtil.dateFormat("yyyyMMddhhmmss"))

